﻿using Dapper;
using OMG.Fill.Potato.Model.Ent;
using ProjectShare;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
namespace OMG.Fill.Potato.Services
{
    /// <summary>
    /// 马铃薯销售、存储与加工情况统计表通用操作类
    /// </summary>
    public class PotSaleStoreges
    {
        /// <summary>
        /// 添加
        /// </summary>
        public virtual ResResult<int> AddInfo(PotSaleStoregeEntity model) {
            ResResult<int> obj = new ResResult<int>();
            string strSql = @"INSERT INTO dbo.T_PotSaleStorege";
            strSql +="(";
            strSql +="Id,";
            strSql +="ReportId,";
            strSql +="ProductYield,";
            strSql +="SaleYield,";
            strSql +="pecSaleYield,";
            strSql +="ZLyield,";
            strSql +="XSyield,";
            strSql +="SYyield,";
            strSql +="ZSyield,";
            strSql +="ProductOutput,";
            strSql +="SaleOutput,";
            strSql +="pecSaleOutput,";
            strSql +="SaleZone,";
            strSql +="StorageNum,";
            strSql +="StorageWay,";
            strSql +="Stock,";
            strSql +="DFyield,";
            strSql +="DFoutput,";
            strSql +="SPyield,";
            strSql +="SPoutput,";
            strSql +="Remark)";
            strSql +=" values(";
            strSql +="@Id,";
            strSql +="@ReportId,";
            strSql +="@ProductYield,";
            strSql +="@SaleYield,";
            strSql +="@pecSaleYield,";
            strSql +="@ZLyield,";
            strSql +="@XSyield,";
            strSql +="@SYyield,";
            strSql +="@ZSyield,";
            strSql +="@ProductOutput,";
            strSql +="@SaleOutput,";
            strSql +="@pecSaleOutput,";
            strSql +="@SaleZone,";
            strSql +="@StorageNum,";
            strSql +="@StorageWay,";
            strSql +="@Stock,";
            strSql +="@DFyield,";
            strSql +="@DFoutput,";
            strSql +="@SPyield,";
            strSql +="@SPoutput,";
            strSql +="@Remark)";
            try
            {
                using (var dbCon = ConnectFactory.GetOpenConnection())
                {
                    model.Id= CustomFun.GetGuid();
                    int result = dbCon.Execute(strSql, model);
                    if (result > 0)
                    {
                        obj.model = result;
                        obj.status = DefaultKey.SuccessResult;
                        obj.message = "添加成功！";
                    }
                    else
                    {
                        obj.model = result;
                        obj.status = DefaultKey.InfoResult;
                        obj.message = "添加失败！数量为:" + result;
                    }
                    dbCon.Dispose();//数据库连接释放
                    return obj;
                }
            }
            catch (Exception ex)
            {
                obj.status = DefaultKey.ErrorResult;
                obj.message = ex.ToString().Trim();
                LogHelper.ErrorLog("新增马铃薯销售、存储与加工情况统计表对象信息失败", ex);
                return obj;
            }
        }
        /// <summary>
        /// 修改
        /// </summary>
        public virtual ResResult<int> UpdateInfo(PotSaleStoregeEntity model)
        {
            ResResult<int> obj = new ResResult<int>();
            string strSql = @"UPDATE dbo.T_PotSaleStorege set ";
            strSql+="ProductYield = @ProductYield,";
            strSql+="SaleYield = @SaleYield,";
            strSql+="pecSaleYield = @pecSaleYield,";
            strSql+="ZLyield = @ZLyield,";
            strSql+="XSyield = @XSyield,";
            strSql+="SYyield = @SYyield,";
            strSql+="ZSyield = @ZSyield,";
            strSql+="ProductOutput = @ProductOutput,";
            strSql+="SaleOutput = @SaleOutput,";
            strSql+="pecSaleOutput = @pecSaleOutput,";
            strSql+="SaleZone = @SaleZone,";
            strSql+="StorageNum = @StorageNum,";
            strSql+="StorageWay = @StorageWay,";
            strSql+="Stock = @Stock,";
            strSql+="DFyield = @DFyield,";
            strSql+="DFoutput = @DFoutput,";
            strSql+="SPyield = @SPyield,";
            strSql+="SPoutput = @SPoutput,";
            strSql += "OPyield = @OPyield,";
            strSql += "OPoutput = @OPoutput,";
            strSql +="Remark = @Remark";
            strSql+= " where ReportId = @ReportId";
           try
            {
                using (var dbCon = ConnectFactory.GetOpenConnection())
                {
                    int result = dbCon.Execute(strSql, model);
                    if (result > 0)
                    {
                        string strRep = "update dbo.T_Report set Status='2',UpdateTime=@UpdateTime where Id=@ReportId";
                        dbCon.Execute(strRep, new { ReportId = model.ReportId, UpdateTime = DateTime.Now });
                        obj.model = result;
                        obj.status = DefaultKey.SuccessResult;
                        obj.message = "更新成功！";
                    }
                    else
                    {
                        obj.model = result;
                        obj.status = DefaultKey.InfoResult;
                        obj.message = "更新失败！数量为:" + result;
                    }
                    dbCon.Dispose();//数据库连接释放
                    return obj;
                }
            }
            catch (Exception ex)
            {
                obj.status = DefaultKey.ErrorResult;
                obj.message = ex.ToString().Trim();
                LogHelper.ErrorLog("更新马铃薯销售、存储与加工情况统计表对象信息失败", ex);
                return obj;
            }
        }
        /// <summary>
        /// 删除
        /// </summary>
        public virtual ResResult<int> DeleteInfo(string id)
        {
            ResResult<int> obj = new ResResult<int>();
            string strSql = @"delete from dbo.T_PotSaleStorege where Id = @Id";
            int result;
            try
            {
                using (var dbCon = ConnectFactory.GetOpenConnection())
                {
                    result = dbCon.Execute(strSql, new { Id = id });
                    if (result > 0)
                    {
                        obj.model = result;
                        obj.status = DefaultKey.SuccessResult;
                        obj.message = "删除成功！";
                    }
                    else
                    {
                        obj.model = result;
                        obj.status = DefaultKey.InfoResult;
                        obj.message = "删除失败！数量为:" + result;
                    }
                    dbCon.Dispose();//数据库连接释放
                    return obj;
                }
            }
            catch (Exception ex)
            {
                obj.status = DefaultKey.ErrorResult;
                obj.message = ex.ToString().Trim();
                LogHelper.ErrorLog("删除马铃薯销售、存储与加工情况统计表对象信息失败", ex);
                return obj;
            }
        }
        /// <summary>
        /// 批量删除
        /// </summary>
        public virtual ResResult<int> DeleteBatch(string[] ids)
        {
            ResResult<int> obj = new ResResult<int>();
            string strIds = string.Join(",", ids.Select(x => x.ToString()).ToArray());
            string strSql = @"delete from dbo.T_PotSaleStorege where Id in @ids";
            var dynamicSqlParam = new DynamicParameters();
            dynamicSqlParam.Add("ids", ids.ToArray(), null, null, null);
            int result;
            try
            {
                using (var dbCon = ConnectFactory.GetOpenConnection())
                {
                    result = dbCon.Execute(strSql, dynamicSqlParam);
                    if (result > 0)
                    {
                        obj.model = result;
                        obj.status = DefaultKey.SuccessResult;
                        obj.message = "删除成功！";
                    }
                    else
                    {
                        obj.status = DefaultKey.InfoResult;
                        obj.message = "删除失败！数量为:" + result;
                    }
                    dbCon.Dispose();//数据库连接释放
                    return obj;
                }
            }
            catch (Exception ex)
            {
                LogHelper.ErrorLog("获取数据字典表批量删除马铃薯销售、存储与加工情况统计表表失败", ex);
                obj.message = ex.ToString().Trim();
                obj.status = DefaultKey.ErrorResult;
                return obj;
            }
        }
        /// <summary>
        /// 获取指定对象
        /// </summary>
        public virtual ResResult<PotSaleStoregeEntity> GetModel(string id) {
            ResResult<PotSaleStoregeEntity> obj = new ResResult<PotSaleStoregeEntity>();
            string strSql = @"select * from dbo.T_PotSaleStorege where Id = @Id";
            try
            {
                using (var dbCon = ConnectFactory.GetOpenConnection())
                {
                    obj.model = dbCon.Query<PotSaleStoregeEntity>(strSql, new { Id = id }).FirstOrDefault();
                    obj.status = DefaultKey.SuccessResult;
                    obj.message = "获取成功！";
                    dbCon.Dispose();//数据库连接释放
                    return obj;
                }
            }
            catch (Exception ex)
            {
                obj.status = DefaultKey.ErrorResult;
                obj.message = ex.ToString().Trim();
                LogHelper.ErrorLog("获取马铃薯销售、存储与加工情况统计表对象信息失败", ex);
                return obj;
            }
        }
        /// <summary>
        /// 获取全部列表
        /// </summary>
        /// <returns></returns>
        public virtual ResResult<List<PotSaleStoregeEntity>> GetList()
        {
            ResResult<List<PotSaleStoregeEntity>> obj = new ResResult<List<PotSaleStoregeEntity>>();
            string strSql = @"select * from dbo.T_PotSaleStorege";
            try
            {
                using (var dbCon = ConnectFactory.GetOpenConnection())
                {
                    obj.model = dbCon.Query<PotSaleStoregeEntity>(strSql).ToList();
                    obj.status = DefaultKey.SuccessResult;
                    obj.message = "获取成功！";
                    dbCon.Dispose();//数据库连接释放
                    return obj;
                }
            }
            catch (Exception ex)
            {
                obj.status = DefaultKey.ErrorResult;
                obj.message = ex.ToString().Trim();
                LogHelper.ErrorLog("更新马铃薯销售、存储与加工情况统计表对象信息失败", ex);
                return obj;
            }
        }
    }
}